package com.cinema.dao;

import com.cinema.model.Movie;
import java.util.List;
import java.util.Optional;

/**
 * 电影数据访问接口
 */
public interface MovieDao {
    
    /**
     * 保存电影
     */
    boolean save(Movie movie);
    
    /**
     * 根据电影ID查找电影
     */
    Optional<Movie> findById(String movieId);
    
    /**
     * 根据电影名查找电影
     */
    Optional<Movie> findByTitle(String title);
    
    /**
     * 获取所有电影
     */
    List<Movie> findAll();
    
    /**
     * 获取所有正在上映的电影
     */
    List<Movie> findAllShowing();
    
    /**
     * 根据导演查找电影
     */
    List<Movie> findByDirector(String director);
    
    /**
     * 根据主演查找电影
     */
    List<Movie> findByActor(String actor);
    
    /**
     * 组合查询电影
     */
    List<Movie> findByTitleDirectorActor(String title, String director, String actor);
    
    /**
     * 更新电影信息
     */
    boolean update(Movie movie);
    
    /**
     * 删除电影
     */
    boolean deleteById(String movieId);
    
    /**
     * 检查电影ID是否存在
     */
    boolean existsById(String movieId);
}